Cloud computing allows a user (e.g., an individual or an organization) to rent computing resources that are maintained and/or managed by a third-party. This may allow the user to rent computing resources that are tailored to their individual computing needs without necessarily having to make a substantial investment in physical hardware, data center real estate, electricity, data center personnel, and/or software licenses.
An example cloud computing system may include physical resources (e.g., a processor and memory) and/or virtualized resources (e.g., a virtualized processor and virtualized memory). A user accessing the cloud computing system may rent a quantity of resources capable of running their workloads. The quantity of computing resources rented may be estimated based on theoretical maximum workloads. The theoretical maximum workloads are assumed to use nearly all (e.g., approximately 100%) of the available resources. In other words, users will rent the maximum quantity of resources needed to execute their workloads in order to avoid system performance issues due to a surge in resource requirements. However, surges in usage may occur infrequently and resources used on average may be below the theoretical maximum, which leads to waste (e.g., the renting of unused computing resources).
Cloud computing providers may implement pricing models based on a quantity of resources rented (e.g., for a predetermined time) as opposed to an actual quantity of resources used (or consumed) by the user. These resources may be packaged as servers with a preconfigured central processing unit (CPU), memory (e.g., random access memory), storage, graphics processing units (GPU), dedicated networking capabilities (e.g., to provide a predetermined networking speed), field programmable gate arrays (FPGA), and/or any other computing resource. The packaged servers may generally be referred to as an instance which a user can rent for a period of time (e.g., in intervals of second(s), minute(s), hour(s), day(s), week(s), month(s), year(s), and/or any other interval of time). Therefore, a user may rent an instance based on the maximum computing resources they estimate using (e.g., which may be estimated based on the surges in usage). By renting resources in instances, a user may only use a portion of the computing resources for a majority of the term of the rental agreement. In other words, this may result in the user paying for resources that are not consumed and the cloud computing provider may financially benefit due to the renting of unused resources.